#ifndef OBJET_H_INCLUDED
#define OBJET_H_INCLUDED

#include <string>

#include "../Jeu/ClassePrincipale.h"
#include "../Zone/TabDeCells.h"

/// \brief les objets
class Objet : public CP
{
    public:

    /// \brief Constructeur de l'objet
    /// \param x : cooronnée en x
    /// \param y : cooronnée en y
    /// \param type : le type d'objet
    /// \param poussable : si on peut pousser l'objet
    /// \param poids
    /// \param accroche
    /// \param vie
    /// \param mana
    Objet(int x, int y, std::string type="O", int poussable=0, int poids=0, int accroche=0, int vie=-1, int mana=0);

    /// \brief Destructeur virtuel
    virtual ~Objet();

    /// \brief Pour savoir si on peut déplaçer l'objet
    /// \return retourne vrai si l'objet est poussable, faux sinon
    bool GetPoussable();

    /// \brief Pour connaître le poids de l'objet
    /// \return retourne un entier
    int GetPoids();

    /// \brief Pour savoir si on peut utiliser le grappin sur cette objet
    /// \return retourne vrai si on eut utiliser le grappin, faux sinon
    bool GetAccroche();

    /// \brief En fonction de l'objet, celui-ci va infliger des dégâts
    virtual void Attaquer();

    protected:

    bool m_poussable; ///< si on peut pousser l'objet
    int m_poids; ///< indeplaçable=0, leger=1, mi-lourd=2, lourd=3
    bool m_accroche; ///< true si on peut uiliser le grappin, false sinon

};

#endif
